xen: arm: Enable 1:1 workaround by default
authorIan Campbell <ian.campbell@citrix.com>
Wed, 4 Dec 2013 14:54:21 +0000 (14:54 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 4 Dec 2013 17:01:51 +0000 (17:01 +0000)
I was just about to send out patches adding the 1:1 workaround to vexpress
(the foundation model is a vexpress platfrom with DMA) and sunxi.

That would have meant that all platforms now implement the quirk. Instead lets
just make it the default and remove the quirk.

In the future this will likely be set based on the presence absence of an
IOMMU, perhaps with additional overrides by the platform.

This results in some dead code in domain_build for dealing with the non-1:1
case. This is deliberate and is left in anticipation of IOMMU support in 4.5.

PLATFORM_QUIRK_GIC_64K_STRIDE is renumbered as a side effect of this change.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Julien Grall <julien.grall@linaro.org>
xen/arch/arm/domain_build.c
xen/arch/arm/platforms/exynos5.c
xen/arch/arm/platforms/midway.c
xen/arch/arm/platforms/omap5.c
xen/arch/arm/platforms/xgene-storm.c
xen/include/asm-arm/platform.h

index 7fa6e02b4cd2a4846799843357bde8373be49f0f..532e8110a04a516c2f9f494d3a77ab72a172df1c 100644 (file)
@@ -22,6 +22,8 @@
 static unsigned int __initdata opt_dom0_max_vcpus;
 integer_param("dom0_max_vcpus", opt_dom0_max_vcpus);
 
+static int dom0_11_mapping = 1;
+
 #define DOM0_MEM_DEFAULT 0x8000000 /* 128 MiB */
 static u64 __initdata dom0_mem = DOM0_MEM_DEFAULT;
 
@@ -110,7 +112,7 @@ static void allocate_memory(struct domain *d, struct kernel_info *kinfo)
     u32 reg_len, reg_size;
     unsigned int bank = 0;
 
-    if ( platform_has_quirk(PLATFORM_QUIRK_DOM0_MAPPING_11) )
+    if ( dom0_11_mapping )
         return allocate_memory_11(d, kinfo);
 
     while ( (memory = dt_find_node_by_type(memory, "memory")) )
index 0e76cac033a20d5005b2627632ef2e80f2cd02d2..fa6b46542c60756b4c2ffac0365fadd3db882892 100644 (file)
@@ -111,11 +111,6 @@ static void exynos5_reset(void)
     iounmap(pmu);
 }
 
-static uint32_t exynos5_quirks(void)
-{
-    return PLATFORM_QUIRK_DOM0_MAPPING_11;
-}
-
 static const char * const exynos5_dt_compat[] __initconst =
 {
     "samsung,exynos5250",
@@ -139,7 +134,6 @@ PLATFORM_START(exynos5, "SAMSUNG EXYNOS5")
     .smp_init = exynos5_smp_init,
     .cpu_up = exynos5_cpu_up,
     .reset = exynos5_reset,
-    .quirks = exynos5_quirks,
     .blacklist_dev = exynos5_blacklist_dev,
 PLATFORM_END
 
index 399056bd21ae354f62c43be69b8142f273e5ad95..b221279ec7ad5327d6536de942585540568da0c4 100644 (file)
@@ -42,11 +42,6 @@ static void midway_reset(void)
     iounmap(pmu);
 }
 
-static uint32_t midway_quirks(void)
-{
-    return PLATFORM_QUIRK_DOM0_MAPPING_11;
-}
-
 static const char * const midway_dt_compat[] __initconst =
 {
     "calxeda,ecx-2000",
@@ -56,7 +51,6 @@ static const char * const midway_dt_compat[] __initconst =
 PLATFORM_START(midway, "CALXEDA MIDWAY")
     .compatible = midway_dt_compat,
     .reset = midway_reset,
-    .quirks = midway_quirks,
 PLATFORM_END
 
 /*
index 54fa5ff56c3a66f4d1b8791110b23bef97b9c5ec..3a3b16b0bd2ea852b6e4b63ef638090cd3f1bc22 100644 (file)
@@ -153,11 +153,6 @@ static int __init omap5_cpu_up(int cpu)
     return 0;
 }
 
-static uint32_t omap5_quirks(void)
-{
-    return PLATFORM_QUIRK_DOM0_MAPPING_11;
-}
-
 static const char const *omap5_dt_compat[] __initconst =
 {
     "ti,omap5",
@@ -170,7 +165,6 @@ PLATFORM_START(omap5, "TI OMAP5")
     .specific_mapping = omap5_specific_mapping,
     .smp_init = omap5_smp_init,
     .cpu_up = omap5_cpu_up,
-    .quirks = omap5_quirks,
 PLATFORM_END
 
 /*
index ea9b0f4fe28cc2daa954d6ea1619584b97072837..f760fcd2eb699dd0219845b579c74549b64d9059 100644 (file)
@@ -24,7 +24,7 @@
 
 static uint32_t xgene_storm_quirks(void)
 {
-    return PLATFORM_QUIRK_DOM0_MAPPING_11|PLATFORM_QUIRK_GIC_64K_STRIDE;
+    return PLATFORM_QUIRK_GIC_64K_STRIDE;
 }
 
 static int map_one_mmio(struct domain *d, const char *what,
index 5900ee407c436f6b0dc88598fd828f61ff879e83..edb399b9bbbfa39966b44ee74a696465542dd438 100644 (file)
@@ -43,16 +43,11 @@ struct platform_desc {
     unsigned int dom0_evtchn_ppi;
 };
 
-/*
- * Quirk to map dom0 memory in 1:1
- * Useful on platform where System MMU is not yet implemented
- */
-#define PLATFORM_QUIRK_DOM0_MAPPING_11 (1 << 0)
 /*
  * Quirk for platforms where the 4K GIC register ranges are placed at
  * 64K stride.
  */
-#define PLATFORM_QUIRK_GIC_64K_STRIDE (1 << 1)
+#define PLATFORM_QUIRK_GIC_64K_STRIDE (1 << 0)
 
 void __init platform_init(void);
 int __init platform_init_time(void);